RAID mass storage systems have recently been developed in an effort to reduce the cost of large, relatively-expensive and complex single disk mass storage systems, to increase the performance of the mass storage system by providing a better architecture of mass storage hardware to more efficiently service read and write commands from a host computer, and to increase error tolerance due to the redundancy and distribution of the information among multiple disk drives, among other reasons.
A typical RAID mass storage system architecture involves an array controller which receives input/output (I/O) commands and data from a host computer. The array controller distributes the I/O commands and data among a plurality of redundancy groups of relatively small, relatively inexpensive disk drives which are connected to the array controller. Each redundancy group includes a multiplicity of the disk drives. For example, a typical RAID system may include between two and six redundancy groups, and each redundancy group may typically contain between four and twenty individual disk drives.
Performance enhancements in a RAID system normally occur from evenly distributing or spreading the data across the disk drives in the redundancy groups. Distributing the data across multiple disk drives involves breaking the data up into relatively small segments and evenly spreading the relatively small sized data segments among the disk drives. A variety of different write algorithms can be employed for distributing the data across the redundancy groups. However, one of the consequences of evenly distributing the data is that any individual disk drive or redundancy group is usually not involved in a read or write operation for more than a limited percentage of time, for example, 30%. During the time when the disk drives and redundancy groups are not involved in a read or write operation, they are idle.
One of the limitations in I/O performance of RAID systems relates to the time required to position the head or transducer at a particular location on the disk to perform the read or write operation. The movement of the head to the desired location for a read or write operation is called "seeking". The amount of time to seek from one location to another location on a relatively small disk drive is very significant compared to the data rate at which data may be written or read after the head is in the appropriate location. Thus, seeking time can constitute an important limitation on the performance of an individual disk drive.
Another factor which constitutes a limitation on the performance of individual disk drives in a RAID system is the time to select a particular head for accomplishing the read and write operations. Selecting a head involves activating the multiplexer of the disk drive to direct the data to and from a particular head. A significant amount of time may be consumed in selecting the heads, particularly when the selection occurs between different disk drives.
It has been recognized that the performance of individual disk drives could be improved if the amount of time spent in seeking could be reduced. Efforts have been made to predict or anticipate the next location for read operations and to move or "pre-seek" the head to that location. The theory behind pre-seeking is that the head will be in a better position to perform the read operation by minimizing the seek delay time once the I/O command is delivered.
However, the theoretical recognition that pre-seeking can improve individual disk drive performance and the successfully implementation of pre-seeking, under conditions which has obtained significant performance improvements, is believed to have never occurred. It is believed that efforts at pre-seeking have previously resulted in the conclusion that previous pre-seeking techniques have generally not improved performance, compared to not pre-seeking by leaving the head in the location of the previous operation. To a significant extent, the failure to improve performance has resulted from an inability to predict accurately the appropriate head locations to which to pre-seek.
As far as is known, the prior efforts to develop pre-seeking techniques have been confined to read operations. Since a read operation applies to data which has been previously written on a disk, the fact that the data is written to the disk defines a limited set of variables which has the potential of providing a better environment in which to anticipate pre-seek locations. Write operations performed by individual disk drives, on the other hand, are typically completely random and largely unpredictable, thereby making the complexity of pre-seeking for write operations virtually impossible or very difficult to predict.